package main.java.day01;

import java.util.*;

/**
 *
 * 给定两个数组，编写一个函数来计算它们的交集。
 *
 * 示例 1:
 *
 * 输入: nums1 = [1,2,2,1], nums2 = [2,2]
 * 输出: [2]
 * 示例 2:
 *
 * 输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
 * 输出: [9,4]
 * 说明:
 *
 * 输出结果中的每个元素一定是唯一的。
 * 我们可以不考虑输出结果的顺序。
 *
 *
 */
public class StringRentain {

    static class Solution {
        public static int[] intersection(int[] nums1, int[] nums2) {
            long time=System.currentTimeMillis();
            List<Integer> listNums1=new ArrayList<>();
            for (int i=0;i<nums1.length;i++)
            {
                listNums1.add(nums1[i]);
            }

            List<Integer> listNums2=new ArrayList<>();

            for (int i=0;i<nums2.length;i++)
            {
                listNums2.add(nums2[i]);
            }

                listNums1.retainAll(listNums2);
              int[] result=new int[listNums1.size()];
              int k=0;
              for (int i:listNums1)
              {
                  result[k++]=i;
              }


            System.out.println("cost:"+(System.currentTimeMillis()-time));
              return result;

        }

        public static int[] intersectionLamada(int[] nums1, int[] nums2) {
                     long time=System.currentTimeMillis();
                     int[] re=Arrays.stream(nums1).flatMap(i-> Arrays.stream(nums2).filter(a-> a!=i?false:true)).distinct().toArray();
                     System.out.println("cost:"+(System.currentTimeMillis()-time));
                     return re;
        }

    }

    public static void main(String[] args) {

        int[] nums2={1,2,3,4,5};
        int[] nums1={2,3,4};
        int[] intersection = Solution.intersection(nums1, nums2);
        int[] intersection2=Solution.intersectionLamada(nums1,nums2);
        System.out.println(Arrays.toString(intersection));
        System.out.println(Arrays.toString(intersection2));


    }


}
